home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Online / RFCs / rfc / rfc0684.txt < prev    next >
Text File  |  1994-01-21  |  22KB  |  413 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. Network Working Group
  7. RFC #684
  8. NIC #32252
  9. April 15,1975
  10.  
  11.  
  12.  
  13.     A Commentary on Procedure Calling as a Network Protocol
  14.  
  15.                         Richard Schantz
  16.  
  17.                            BBN-TENEX
  18.  
  19.  
  20.  
  21. Preface
  22. _______
  23.  
  24. This RFC is being issued as a first step in an attempt to  stimulate
  25. a dialog on some issues in designing a distributed computing system.
  26. In particular, it considers the approach taken in a design set forth
  27. in  RFC #674, commonly known as the "Procedure Call Protocol" (PCP).
  28. In the present document, the concentration is on what we believe  to
  29. be the shortcomings of such a design approach.
  30.  
  31. Note at the outset that this is not the first time we are  providing
  32. a critical commentary on PCP.  During the earlier PCP design stages,
  33. we met with the PCP designers for  a  brief  period,  and  suggested
  34. several  changes,  many  of  which became part of PCP Version 2.  We
  35. hasten to add, however, that the nature of  those  suggestions  stem
  36. from  an entirely different point of view than those presented here.
  37. Our original suggestions, and also some subsequent ones, were mainly
  38. addressing  details  of implementation.  In this note the concern is
  39. more with the concepts underlying the PCP design than with  the  PCP
  40. implementation.
  41.  
  42. This note is being  distributed  because  we  feel  that  it  raises
  43. certain  issues  which  have not been adequately addressed yet.  The
  44. PCP designers are to  be  congratulated  for  providing  a  detailed
  45. written  description  of  their  ideas,  thereby  creating a natural
  46. starting  point  for  a  discussion  of  distributed  system  design
  47. concepts.  It is the intent of this note to stimulate an interaction
  48. among individuals involved with distributed computing,  which  could
  49. perhaps  result in systems whose designs don't preclude their use in
  50. projects  other  than  the  one  for  which  they  were   originally
  51. conceived.
  52.  
  53. The ideas  expressed  in  this  RFC  have  benefited  from  numerous
  54. discussions with Bob Thomas, BBN-TENEX, who shares the point of view
  55. taken.
  56.  
  57.           A COMMENTARY on PROCEDURE CALLING         Page   2
  58.  
  59.  
  60.  
  61. Introduction
  62. ____________
  63.  
  64.  
  65.      While the Procedure Call Protocol (PCP) and its use within  the
  66. National  Software  Works (NSW) context attacks many of the problems
  67. associated with integrating independent computing systems to  handle
  68. a  distributed  computation,  it  is  our  feeling  that  its design
  69. contains flaws which should prevent its widespread use, and  in  our
  70. view,  limit  its overall utility.  We are not voicing our objection
  71. to the use of PCP, in its current  definition,  as  the  base  level
  72. implementation  vehicle for the NSW project.  It is already too late
  73. for any such objection, and PCP may, in fact, be very effective  for
  74. the  NSW  implementation,  since they are proceeding in parallel and
  75. have probably influenced each other.   Rather,  we  are  voicing  an
  76. objection  to  the  "PCP philosophy", in the hope of preventing this
  77. type of protocol from becoming the  de-facto  network  standard  for
  78. distributed  computation,  and in the hope of influencing the future
  79. direction of this and similar efforts.
  80.  
  81.      Some of the objectionable aspects of PCP, it can be argued, are
  82. differences  of  individual  preference, and philosophers have often
  83. indicated that you cannot argue about  tastes.   We  have  tried  to
  84. avoid  such  arguments in this document.  Rather, we consider PCP in
  85. light  of  our  experience  in   developing   distributed   systems.
  86. Considered  in  this  way,  we  feel  that  PCP  and  its underlying
  87. philosophy have flaws which  make  it  inappropriate  as  a  general
  88. purpose protocol and virtual programming system for the construction
  89. of distributed software systems.  It is  our  opinion  that  PCP  is
  90. probably  complete  in  the  sense that one can probably do anything
  91. that is required using its primitives.  A key  issue  then,  is  not
  92. whether this function or that function can be supported.  Rather, to
  93. us an important question is how easy it is to do  the  things  which
  94. experience has indicated are important to distributed computing.  In
  95. addition, a programming discipline dedicated to network applications
  96. should  pay  particular  attention  to  coercing its users away from
  97. actions which systems programming in general and network programming
  98. in particular have shown to be pitfalls in system implementation.
  99.  
  100.  
  101. A Point of View
  102. _ _____ __ ____
  103.  
  104.  
  105.      At the outset, we fully support the aspects of the  PCP  design
  106. effort  that  have  gone  into  systematizing  the  interaction  and
  107. agreements between distributed  elements  to  support  inter-machine
  108. computing.   This  includes  the  definition of the various types of
  109. replies, the  standardization  of  the  data  structure  format  for
  110. inter-machine  exchange,  and  the process creation primitives which
  111. extend the machine boundaries.  Such notions are basic and  must  be
  112. part  of any distributed system definition.  Our main concern is not
  113. with these efforts.
  114.  
  115.           A COMMENTARY on PROCEDURE CALLING         Page   3
  116.  
  117.  
  118.  
  119.      Rather, we take exception to PCP's underlying premise: that the
  120. procedure  calling  discipline  is  the  starting point for building
  121. multi-computer systems.  This premise leads to a model which  has  a
  122. central  point  for the entire algorithm control, rather than a more
  123. natural (in network situations) distributed control accomplished  by
  124. cooperating   independent   entities   interacting   through  common
  125. communication paths.  While the procedure call may be an appropriate
  126. basis  for  certain  applications,  we  believe  that it can neither
  127. directly  nor  accurately  model  the   interactions   and   control
  128. structures that occur in many distributed multi-computer systems.
  129.  
  130.      Much of what follows may seem to be a pedagogic  argument,  and
  131. PCP supporters may take the position of "who cares what you call it,
  132. its doing the same thing".  Our reply is that it is  very  important
  133. to achieve a clear and concise model of distributed computation, and
  134. while the PCP  model  does  not  require  "poor  implementation"  of
  135. distributed  systems, neither does it make "good implementation" any
  136. easier, nor does it prohibit ill-advised programming  practices.   A
  137. model  stressing the dynamic interconnection of somewhat independent
  138. computing  entities,  we  feel,  adheres  more  to  the  notions  of
  139. defensive  programming,  which  we  have  found to be fundamental to
  140. building usable multi-machine implementations.
  141.  
  142.      The rest of this RFC discusses what we feel to be some  of  the
  143. shortcomings of a procedure call protocol.
  144.  
  145.  
  146. Limitations of Procedure Calling Across Machines
  147. ___________ __ _________ _______ ______ ________
  148.  
  149.  
  150.      First and foremost, it is our contention that procedure calling
  151. should  not  be  the  basis for multi-machine interactions.  We feel
  152. that a request and reply protocol along  with  suitably  manipulated
  153. communication paths between processes forms a model better suited to
  154. the situation  in  which  the  network  places  us.   In  a  network
  155. environment  one has autonomous computing entities which have agreed
  156. on their cooperation, rather than a master process forcing execution
  157. of a certain body of code to fulfill its computing needs.  In such a
  158. configuration, actions required of a process are  best  accommodated
  159. indirectly (by request) rather than directly (by procedure call), in
  160. order to maintain the integrity of the constituent processes.
  161.  
  162.      Procedure calling is most  often  a  very  primitive  operation
  163. whose   implementation   often   requires   only  a  single  machine
  164. instruction.  In addition, it is usually true that procedure calling
  165. is  usually  not  within  the  domain of the operating system.  [The
  166. Multics intersegment procedure  calling  mechanism  may  present  an
  167. exception  to  this,  until  linkage is complete.  In the remote PCP
  168. case, however, linkage  can  never  be  complete  in  the  sense  of
  169. supporting  a  fast transfer of control between modules].  Processes
  170. and communication paths between processes, however,  are  undeniably
  171. operating   system   constructs.   In  an  environment  where  local
  172. procedure calling was "cheap", it would be ill-advised to  blur  the
  173.  
  174.           A COMMENTARY on PROCEDURE CALLING         Page   4
  175.  
  176.  
  177.  
  178. distinction  between  a local (inexpensive in time and effort) and a
  179. remote procedure call, which obviously  requires  a  great  deal  of
  180. effort  by  the "PCP system", if not by the PCP user.  It also seems
  181. to  be  the  case  that  the  cost  of  blurring  the   local/remote
  182. distinction  at  the  procedure call level will be found in the more
  183. frequent use of a less efficient local procedure calling  mechanism.
  184. Interprocess communication, on the other hand, (at least with regard
  185. to stream or  message  oriented  channels  and  not  just  interrupt
  186. signals)   is  generally  regarded  as  having  a  significant  cost
  187. associated with it.   Message  sending  is  always  an  interprocess
  188. action,  and  requires  system intervention always.  There is not as
  189. substantial a difference between the IPC of local processes and  the
  190. IPC  of  remote  processes,  as  between  local and remote procedure
  191. calling.  PCP is suggestive of a model in which processes exist that
  192. span machine boundaries to provide inter-machine subroutine calling.
  193. Yet the PCP documentation has not advocated the notion of a  process
  194. that  spans  machine  boundaries,  and  rightfully  so  since such a
  195. creation would cause innumerable problems.  Since procedure  calling
  196. is more suitable as an intra-process notion, it seems to be a better
  197. idea to take the interprocess communication framework and extend  it
  198. to  have  a uniform interpretation locally and remotely, rather than
  199. to extend the procedure calling model.  It is  also  our  contention
  200. that  a  model  which relies on procedure calling for its basis does
  201. not take into account the special nature of the network environment,
  202. and  that  such  an  environment  can  be more suitably handled in a
  203. message passing model.  Furthermore, we feel that programming  as  a
  204. whole,  even  purely  local computing, will benefit from paying more
  205. attention to such areas as reliability and  robustness,  which  have
  206. been  brought to the forefront through experience with an oftentimes
  207. unreliable network and  collection  of  hosts.   An  IPC  model,  by
  208. emphasizing  the  connections  between  disjoint processes, seems to
  209. reinforce the idea that distributed  computing  is  accomplished  by
  210. joining  separate entities, and that defensive programming and error
  211. handling techniques are appropriate.  Since PCP is,  we  think,  for
  212. distributed  system  builders,  and  not  for  the end user (e.g. an
  213. RSEXEC user), avoiding  the  network,  interconnection  issues,  and
  214. relative  costs, may be counter-productive if the goal is to achieve
  215. usable network systems.
  216.  
  217.      In a similar vein, the entire notion of inter-machine procedure
  218. calling  underlies  a model which in effect has extended the address
  219. space of a single process.  That is, there  is  a  single  locus  of
  220. algorithm   control   (although   perhaps  not  a  single  locus  of
  221. execution).  While this model may well serve the needs of a  "local"
  222. computation  where  the  parts  are  strongly  bound  together,  our
  223. experience in building working distributed  systems  has  shown  the
  224. utility of a model which has multiple loci of control and execution.
  225. In such a model, it is through agreements on the method and type  of
  226. information  interchange  and synchronization, that a computation is
  227. carried out, rather than at the  singular  direction  of  a  central
  228. entity.   In  a model that has distributed control and execution, we
  229. feel a process will be in a better position to naturally  cope  with
  230. the many vagaries that necessarily arise in a network environment.
  231.  
  232.           A COMMENTARY on PROCEDURE CALLING         Page   5
  233.  
  234.  
  235.  
  236.      The  unmistakable  trend  in  systems  programming  is   toward
  237. inviolable    (protected)    process    structures   with   external
  238. synchronization as a means of coping with  complex  debugging  tasks
  239. and  the  difficulty of making system changes.  This trend is better
  240. supported, we feel, by a message passing rather  than  a  procedural
  241. model of computation.  Furthermore, we feel that network programming
  242. techniques should be applied to local computation, not the other way
  243. around.
  244.  
  245.  
  246. Some Particulars
  247. ____ ___________
  248.  
  249.  
  250.      In the following list, we try to be more specific with  respect
  251. to  particular situations where we think the PCP concept may be weak
  252. as the basis for a network programming system.  For  some  of  these
  253. examples to be meaningful, the reader should be fairly familiar with
  254. the PCP documents issued as RFC 674.
  255.  
  256.        1.  Recovery  from  component  malfunction  may  be  very
  257.     difficult  to  handle  by  a process that is not the central
  258.     control (i.e.  a  process  which  is  being  manipulated  by
  259.     having  its  procedures  executed).   Is the situation where
  260.     there is network trouble, for example, to be  modeled  by  a
  261.     forced procedure call to some error recovery routine?  It is
  262.     precisely such situations where distributed  control  serves
  263.     as  a  better  model.   Consider  the  act of introducing an
  264.     inferior to another acquaintance and then supplying the  new
  265.     handle  as a parameter of a subsequent procedure call in the
  266.     inferior.  The inferior's blind  use  of  the  parameter  to
  267.     interact with the other process illustrates the manipulative
  268.     aspects of a superior.  The inferior never really  is  aware
  269.     of  a new communication path to a new process.  The inferior
  270.     environment (as maintained by the  PCP  "system")  has  been
  271.     changed  by the superior, with no active notification of the
  272.     inferior.  Certainly this makes user  coded  error  recovery
  273.     somewhat awkward.
  274.  
  275.        2.  Such process manipulation may at  times  violate  the
  276.     principles  of  modular programming.  In this vein, it seems
  277.     beneficial to be able to debug separately the  pieces  of  a
  278.     computation  and then worry only about their synchronization
  279.     to achieve a totally  debugged  system.   With  PCP  in  its
  280.     fullest sense, the danger of error propagation seems greater
  281.     because of the power of a process to cause execution  of  an
  282.     arbitrary  procedure  and  to  read/write remote data stores
  283.     without the active participation of the remote process.
  284.  
  285.        3.  Can we assume a proper initialization sequence if our
  286.     procedures   are  called  remotely?   Must  every  procedure
  287.     contain the code to check  for  the  propriety  and  correct
  288.     sequencing of the call? A model in which each remote process
  289.     is  an  active  computing  element  seems  better  able   to
  290.  
  291.           A COMMENTARY on PROCEDURE CALLING         Page   6
  292.  
  293.  
  294.  
  295.     conveniently apply protective standards to the code and data
  296.     it encompasses.
  297.  
  298.        4.  PCP doesn't model long term parallel  activity  in  a
  299.     convenient   fashion,  as  is  required  to  handle  various
  300.     asynchronous producer/consumer process  relationships.   The
  301.     synchronization  is  geared  more  to  a one-to-one call and
  302.     return, rather than to the asynchronous nature and  multiple
  303.     returns  for  a single request, as exhibited by many network
  304.     services.  In addition, low priority, preemptable background
  305.     tasks  are  hard  (impossible?) to model in a procedure call
  306.     environment.
  307.  
  308.        5.  Communication  paths  are  not  treated  as  abstract
  309.     objects  which are independent from the actual entities they
  310.     connect, and hence they cannot be utilized  in  some  useful
  311.     ways (e.g. to carry non PCP messages).  Also with respect to
  312.     treating communication paths as objects, there is no concept
  313.     of  passing  a  communication  path  to  an  inferior (or an
  314.     acquaintance), without having to create a  new  "connection"
  315.     (whether  or  not  this turns out to be a physical channel).
  316.     The ability to pass communication paths is often  useful  in
  317.     subcontracting  requests  to inferior processes.  To do this
  318.     within PCP requires the cooperation of the  calling  process
  319.     (i.e. to  use  the new connection handle), which again seems
  320.     to  violate  the  concepts  of  modular  programming.    The
  321.     alternative  approach  in  PCP is to have the superior relay
  322.     the subsequent communications to its created  inferior,  but
  323.     the  effort involved would probably prohibit the use of this
  324.     technique for subcontracting.
  325.  
  326.        6.  PCP seems too complicated to be used for the type  of
  327.     processing  which  requires  periodic but short (i.e.  a few
  328.     words  exchanged)  interactions.    An   example   of   such
  329.     interactions  is  the  way the TIP uses the TENEX accounting
  330.     servers (see RFC #672).  Furthermore, PCP is  probably  much
  331.     too  complex  for  implementation  on a small host.  In that
  332.     regard, there does not seem to be a definition of what might
  333.     constitute a minimum implementation for a host/process which
  334.     did/could not handle all of what has been developed.
  335.  
  336.        7.  In the PCP model, it may become awkward  or  resource
  337.     consuming  for  a service program to do such things as queue
  338.     operations for execution at a later time (persistence) or at
  339.     a  more opportune time (priority servicing mechanism).  Such
  340.     implementations may require dummy returns  and  modification
  341.     of   the   controlling   fork  concept,  or  maintenance  of
  342.     processing forks over long periods of inactivity.
  343.  
  344.        8.  It is not  always  true  that  a  process  connecting
  345.     (splicing)  to  a  service  should  be able to influence the
  346.     service process environment in any direct way.   How  can  a
  347.     service process in PCP prevent a malicious user fom splicing
  348.  
  349.           A COMMENTARY on PROCEDURE CALLING         Page   7
  350.  
  351.  
  352.  
  353.     to it and then introducing it  to  an  arbitrary  number  of
  354.     processes,  thereby  overflowing  the  table  space  in that
  355.     process.  All of that could  have  been  done  without  ever
  356.     executing  a  single instruction of user written code.  This
  357.     difficulty is a consequence of the PCP notion of having  one
  358.     process  manipulate  the  environment of another without its
  359.     active participation in such actions.
  360.  
  361.        9.   Doesn't  the  fact  that  the  network  PCP  process
  362.     implementation  is so much neater than the TENEX PCP process
  363.     implementation (since  TENEX  doesn't  have  a  general  IPC
  364.     facility)  suggest  that  message  passing and communication
  365.     facilities supported by the "system" provides a sound  basis
  366.     for  multi-process  implementations,  and  that perhaps such
  367.     facilities  should   be   primitively   available   to   the
  368.     distributed system builders who will use PCP?
  369.  
  370.        10.   There  is  a  question  of  whether   PCP   is   an
  371.     implementation virtual machine (language), or an application
  372.     virtual machine (language).  That is, is PCP intended to  be
  373.     used   to   implement   systems   which  manage  distributed
  374.     resources, or as an end  product  which  makes  the  network
  375.     resources  themselves  easier  to  use  for  the  every day,
  376.     ordinary  programmer  (e.g.   makes   the   network   itself
  377.     transparent  to  users).   One  gets  the  feeling  that the
  378.     designers had both goals, and that neither one is completely
  379.     satisfied.   If  the  former  goal is taken, we believe that
  380.     most of the  complexities  (e.g.   network  trouble,  broken
  381.     connections,   etc.)   and  possibilities  (e.g.   redundant
  382.     implementation,  broadcast   request,   etc.)   of   network
  383.     implementations  are  not  provided for adequately.  In this
  384.     view,  the  NSW  framework  (Works  manager,  FE)   is   the
  385.     distributed  system  that  utilizes  the  PCP implementation
  386.     language.  We do not see how the use of PCP in this  context
  387.     provides   for   either  an  extra-reliable  system  through
  388.     component redundancy,  or  a  persistent  system  which  can
  389.     tolerate  temporary malfunctions.  If one subscribes to this
  390.     view, then it doesn't seem right that the objects  that  run
  391.     under the created system (i.e.  the tools that run under the
  392.     PCP implemented Front End, Works Manager, and  TBH  monitor)
  393.     should  also  be  aware of or use PCP.  If one considers the
  394.     latter goal, that PCP implements a  virtual  machine  to  be
  395.     presented   to   all   programmers  for  making  distributed
  396.     resources easy to use, then it is clear that  PCP  with  its
  397.     manifest  concern  for  object location does not provide for
  398.     the desireable properties of network transparency.
  399.  
  400. Our conclusion is that procedure  calling  is  not  the  appropriate
  401. basis  for distributed multi-computer systems because it can neither
  402. directly nor accurately model  the  network  environment.   The  PCP
  403. virtual  programming  system may be inadequate for implementing many
  404. distributed  systems  because  the  complexities  and  possibilities
  405. unique to the network environment are not provided for at this basic
  406.  
  407.           A COMMENTARY on PROCEDURE CALLING         Page   8
  408.  
  409.  
  410.  
  411. level.
  412.